 
package Presentacion;

import Logica.Casilla;
import Logica.Ficha;
import Logica.Jugador;
import Logica.Tablero;
import Logica.Arbol;
import Logica.RmiServer;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.rmi.AccessException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.TransferHandler;

/**
 * Clase encargada de mostrar la ventana principal de juego, que extiende de javax.swing.JFrame
 * @author jero
 */
public class Principal extends javax.swing.JFrame {

    InterfaceRemota rmiServer;
    private Board board = new Board(); 
    private ArrayList<javax.swing.JButton> atril = new ArrayList<javax.swing.JButton>();
    private int idJugador;
    

    /** Creates new form Principal */
    /**
     * Constructor de la clase que recibe como parámetro un atributo de tipo entero que representa el identificador de un jugador
     * @throws RemoteException 
     */
    public Principal(int idJug) throws RemoteException {
        
        idJugador = idJug;
        
        board.getInterfaceRemota(rmiServer);        
        this.getContentPane().setBackground(Color.BLACK);        
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = this.getSize();
        frameSize.height = ((frameSize.height > screenSize.height) ? screenSize.height : frameSize.height);
        frameSize.width = ((frameSize.width > screenSize.width) ? screenSize.width : frameSize.width);
        this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); 
        
        //this.setLocationRelativeTo(null);
        
        llenarAtril();
        initComponents();       
        
        this.setSize(1330, 780);
        board.setLocation(330, 25);
        
        this.add(board);        
        board.pintarTablero();       
        board.setSize(600, 600);
        board.ordenarTablero();   
        
        mostrarClientes();
               
        System.out.println(jLabel3.getLocation());
        System.out.println(jLabel4.getLocation());
        System.out.println(jLabel5.getLocation());         
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel10 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jLabel11 = new javax.swing.JLabel();
        jTextField5 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jPanel4 = new javax.swing.JPanel();
        jLabel13 = new javax.swing.JLabel();
        jLabel14 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        jLabel16 = new javax.swing.JLabel();
        jButton8 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        jButton10 = new javax.swing.JButton();
        jButton11 = new javax.swing.JButton();
        jLabel17 = new javax.swing.JLabel();
        jTextField6 = new javax.swing.JTextField();
        jLabel18 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        jLabel19 = new javax.swing.JLabel();
        jTextField7 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();
        jLabel21 = new javax.swing.JLabel();
        jLabel22 = new javax.swing.JLabel();
        jLabel23 = new javax.swing.JLabel();
        jLabel24 = new javax.swing.JLabel();
        jLabel25 = new javax.swing.JLabel();
        jLabel26 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenu3 = new javax.swing.JMenu();
        jMenu2 = new javax.swing.JMenu();
        jMenu4 = new javax.swing.JMenu();
        jMenu5 = new javax.swing.JMenu();

        setTitle("SCRABBLE Batman");
        setBounds(new java.awt.Rectangle(300, 70, 500, 500));
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowActivated(java.awt.event.WindowEvent evt) {
                formWindowActivated(evt);
            }
        });
        getContentPane().setLayout(null);

        jPanel1.setLayout(null);
        jPanel1.add(jLabel3);
        jLabel3.setBounds(20, 50, 0, 0);
        jPanel1.add(jLabel4);
        jLabel4.setBounds(18, 19, 0, 0);
        jPanel1.add(jLabel5);
        jLabel5.setBounds(50, 20, 0, 0);

        getContentPane().add(jPanel1);
        jPanel1.setBounds(300, 35, 0, 0);

        jLabel10.setForeground(new java.awt.Color(255, 255, 255));
        jLabel10.setText("ANUNCIOS :");
        getContentPane().add(jLabel10);
        jLabel10.setBounds(60, 390, 80, 14);

        jTextArea1.setEditable(false);
        jTextArea1.setBackground(new java.awt.Color(204, 204, 204));
        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jTextArea1.setAutoscrolls(false);
        jTextArea1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jScrollPane1.setViewportView(jTextArea1);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(80, 420, 170, 110);

        jLabel11.setForeground(new java.awt.Color(255, 255, 255));
        jLabel11.setText("# FICHAS EN EL SACO : ");
        getContentPane().add(jLabel11);
        jLabel11.setBounds(70, 620, 150, 14);

        jTextField5.setEditable(false);
        jTextField5.setBackground(new java.awt.Color(204, 204, 204));
        jTextField5.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        getContentPane().add(jTextField5);
        jTextField5.setBounds(90, 580, 170, 20);

        jLabel1.setForeground(new java.awt.Color(255, 255, 255));
        jLabel1.setText("PUNTAJES :");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(40, 120, 80, 20);

        jLabel12.setForeground(new java.awt.Color(255, 255, 255));
        jLabel12.setText("CONVENCIONES :");
        getContentPane().add(jLabel12);
        jLabel12.setBounds(970, 140, 120, 14);

        jPanel4.setBackground(new java.awt.Color(204, 204, 204));
        jPanel4.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        jLabel13.setText("Doble Valor de Letra");

        jLabel14.setText("Triple Valor de Letra");

        jLabel15.setText("Triple Valor de Palabra");

        jLabel16.setText("Doble Valor de Palabra");

        jButton8.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\dl.png")); // NOI18N
        jButton8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton8ActionPerformed(evt);
            }
        });

        jButton9.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\tl.png")); // NOI18N
        jButton9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton9ActionPerformed(evt);
            }
        });

        jButton10.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\dp.png")); // NOI18N
        jButton10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton10ActionPerformed(evt);
            }
        });

        jButton11.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\tp.png")); // NOI18N
        jButton11.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton11ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton8, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton9, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton10, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton11, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel15)
                    .addComponent(jLabel14)
                    .addComponent(jLabel13)
                    .addComponent(jLabel16))
                .addContainerGap(29, Short.MAX_VALUE))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(jPanel4Layout.createSequentialGroup()
                                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(jButton8, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(jLabel13))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel14))
                            .addComponent(jButton9, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabel16))
                    .addComponent(jButton10, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jButton11, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel15))
                .addContainerGap(13, Short.MAX_VALUE))
        );

        getContentPane().add(jPanel4);
        jPanel4.setBounds(980, 180, 190, 120);

        jLabel17.setForeground(new java.awt.Color(255, 255, 255));
        jLabel17.setText("VERIFICAR PALABRA :");
        getContentPane().add(jLabel17);
        jLabel17.setBounds(960, 330, 170, 14);

        jTextField6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField6ActionPerformed(evt);
            }
        });
        getContentPane().add(jTextField6);
        jTextField6.setBounds(970, 360, 130, 20);

        jLabel18.setForeground(new java.awt.Color(255, 255, 255));
        jLabel18.setText("ACCIONES : ");
        getContentPane().add(jLabel18);
        jLabel18.setBounds(960, 400, 90, 14);

        jButton2.setText("Validar Jugada");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton2);
        jButton2.setBounds(990, 440, 140, 23);

        jButton3.setText("Deshacer Jugada");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton3);
        jButton3.setBounds(990, 470, 140, 23);

        jButton4.setText("Pasar Turno");
        getContentPane().add(jButton4);
        jButton4.setBounds(990, 500, 140, 23);

        jButton5.setText("Cambiar Ficha");
        jButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton5ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton5);
        jButton5.setBounds(990, 530, 140, 23);

        jButton6.setText("Cambiar Atril");
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton6);
        jButton6.setBounds(990, 560, 140, 23);

        jButton7.setText("Abandonar Partida");
        jButton7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton7ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton7);
        jButton7.setBounds(990, 590, 140, 23);

        jButton1.setText("Verificar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(1110, 360, 90, 23);

        jLabel19.setForeground(new java.awt.Color(255, 255, 255));
        jLabel19.setText("TURNO ACTUAL :");
        getContentPane().add(jLabel19);
        jLabel19.setBounds(70, 550, 110, 14);

        jTextField7.setEditable(false);
        jTextField7.setBackground(new java.awt.Color(204, 204, 204));
        jTextField7.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jTextField7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField7ActionPerformed(evt);
            }
        });
        getContentPane().add(jTextField7);
        jTextField7.setBounds(120, 650, 50, 18);

        jLabel2.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\dock2.png")); // NOI18N
        getContentPane().add(jLabel2);
        jLabel2.setBounds(480, 630, 320, 70);

        jLabel20.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\ScrabbleLogo.png")); // NOI18N
        getContentPane().add(jLabel20);
        jLabel20.setBounds(20, 20, 190, 60);

        jLabel21.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\Batman.png")); // NOI18N
        getContentPane().add(jLabel21);
        jLabel21.setBounds(130, 70, 150, 40);

        jLabel22.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\batmanLogo.gif")); // NOI18N
        getContentPane().add(jLabel22);
        jLabel22.setBounds(210, 10, 100, 60);

        jLabel23.setForeground(new java.awt.Color(255, 255, 255));
        getContentPane().add(jLabel23);
        jLabel23.setBounds(80, 170, 0, 0);

        jLabel24.setForeground(new java.awt.Color(255, 255, 255));
        getContentPane().add(jLabel24);
        jLabel24.setBounds(80, 200, 0, 0);

        jLabel25.setForeground(new java.awt.Color(255, 255, 255));
        getContentPane().add(jLabel25);
        jLabel25.setBounds(80, 230, 0, 0);

        jLabel26.setForeground(new java.awt.Color(255, 255, 255));
        getContentPane().add(jLabel26);
        jLabel26.setBounds(80, 260, 0, 0);

        jMenu1.setText("Archivo");

        jMenu3.setText("Salir");
        jMenu1.add(jMenu3);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Ayuda");

        jMenu4.setText("Reglas del Juego");
        jMenu2.add(jMenu4);

        jMenu5.setText("Acerca de Scrabble Batman");
        jMenu2.add(jMenu5);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
// TODO add your handling code here:
                                        
       //Board b = new Board();        
        //jPanel2.add(b);           
        //jPanel2.repaint();   
    
}//GEN-LAST:event_formWindowActivated

    private void jTextField6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField6ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextField6ActionPerformed

    /*
     * Asigna la acción de capturar la palabra ingresada en un campo de texto para verificar que esté en el diccionario
     * al botón "Verificar"
     */
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        String palabra = jTextField6.getText();
        boolean existe = verificarDiccionario(palabra);
        if(existe){
           JOptionPane.showMessageDialog(null, "La palabra "+palabra+" es Valida");        
        }else{
           
           JOptionPane.showMessageDialog(null, "La palabra "+palabra+" NO es Valida");
        }
        
        
    }//GEN-LAST:event_jButton1ActionPerformed

    /*
     * Asigna la acción de remover las fichas ubicadas en el tablero en un turno al botón "Deshacer Jugada"
     */
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        try {
            // TODO add your handling code here:
            board.removeAll();
            board.pintarTablero();
            board.setSize(600, 600);
            board.ordenarTablero();
        } catch (RemoteException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }//GEN-LAST:event_jButton3ActionPerformed
    
    /*
     * Asigna la acción de remover una ficha del atril del jugador al boton "Cambiar Ficha"
     */
    
    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
        // TODO add your handling code here:
        try {
            // TODO add your handling code here:
           Tablero t = RmiServer.getInstance().getRmiServer().getTablero();
           for(int i = 0 ; i < t.getJugadores().size(); i++){
               if(t.getJugadores().get(i).getJugador_id() == idJugador){
                   Object[] fichasAtril = {t.getJugadores().get(i).getAtril().getFichas().get(0).getLetra(),
                                           t.getJugadores().get(i).getAtril().getFichas().get(1).getLetra(),
                                           t.getJugadores().get(i).getAtril().getFichas().get(2).getLetra(),
                                           t.getJugadores().get(i).getAtril().getFichas().get(3).getLetra(),
                                           t.getJugadores().get(i).getAtril().getFichas().get(4).getLetra(),
                                           t.getJugadores().get(i).getAtril().getFichas().get(5).getLetra(),
                                           t.getJugadores().get(i).getAtril().getFichas().get(6).getLetra()};
                   
                   Object fichaEscogida = JOptionPane.showInputDialog(null,
                   "Seleccione la ficha de su atril que desea cambiar", "Cambiar Ficha",
                    JOptionPane. QUESTION_MESSAGE, null,fichasAtril, fichasAtril[0]);
                   
                    RmiServer.getInstance().getRmiServer().cambiarFicha(idJugador,(String)fichaEscogida);
                    
               }
           }
           //REMOVER LAS FICHAS ACTUALES
           for(int i = 0; i < atril.size() ;i++){ 
               this.remove(atril.get(i));                
           }           
           llenarAtril();
           JOptionPane.showMessageDialog(null, "La ficha ha sido cambiada con exito");     
             
           
        } catch (RemoteException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }//GEN-LAST:event_jButton5ActionPerformed

    /*
     * Asigna la acción de cambiar las fichas del atril del jugador al botón "Cambiar Atril"
     */
    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
        try {
           
            RmiServer.getInstance().getRmiServer().cambiarAtril(idJugador);
            //se remueven las fichas actuales del atril de la interfaz
            for(int i = 0; i < atril.size() ;i++){ 
                this.remove(atril.get(i));                
            }
            llenarAtril();
            JOptionPane.showMessageDialog(null, "El atril ha sido renovado exitosamente");
            
        } catch (RemoteException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }//GEN-LAST:event_jButton6ActionPerformed

    private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jButton7ActionPerformed

    private void jTextField7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField7ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextField7ActionPerformed

    private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jButton8ActionPerformed

    private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jButton9ActionPerformed

    private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton10ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jButton10ActionPerformed

    private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jButton11ActionPerformed

    /*
     * Asigna la acción de verificar que la palabra ubicada en el tablero se encuentre en el diccionario
     * y este ubicada correctamente
     */
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
                
        //SE REALIZA LA VALIDACION 
        
        ArrayList<Casilla> palabraNueva = board.palabraIngresada();
        boolean palabraValida = true;
        boolean tableroVacio = tableroVacio();
        boolean palabraEnTableroVacio;        
        ArrayList<ArrayList<Casilla>> pVerticales = obtenerPalabrasVerticales();        
        ArrayList<ArrayList<Casilla>> pHorizontales = obtenerPalabrasHorizontales();
        
                
        //Si el tablero esta Vacio      
        if(tableroVacio){
           //Si el tablero esta vacio, valida si la palabra ingresada inicia en el centro 
           palabraEnTableroVacio = validarPalabraEnTableroVacio(palabraNueva);
           
           if(palabraEnTableroVacio){               
               //Si la palabra ingresada inicia en el centro, se validan las letras comunes               
               //boolean letrasComunes = cruzarPalabras(pVerticales,pHorizontales);
               //Si el tablero estava vacio, no hay necesidad de cruzar palabras ya que solo va a haber una
               
                   //Si estan cruzadas correctamente las palabras, se validan todas en el diccionario
                   
                   boolean existenVerticales = palabrasValidasEnDiccionario(pVerticales);   
                   boolean existenHorizontales = palabrasValidasEnDiccionario(pHorizontales);                                      
                                    
                   if(existenVerticales && existenHorizontales){
                      palabraValida = true;
                      JOptionPane.showMessageDialog(null, "La palabra es CORRECTA");
                      
                      //Capturar la palabra completa para actualizar el tablero y la puntuacion
                      palabraNueva = capturarPalabra(pVerticales,pHorizontales,palabraNueva);
                      
                      try {
                            RmiServer.getInstance().getRmiServer().setTablero(palabraNueva,idJugador);
                      }catch (RemoteException ex) {
                             Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
                      }
                      
                   }else{
                      palabraValida = false;
                      JOptionPane.showMessageDialog(null, "La palabra No existe en el diccionario");
                   }                   
                             
           }
           else{
               palabraValida = false;
               JOptionPane.showMessageDialog(null, "La palabra Debe empezar en el centro"); 
           }          
        }
        
        //Si el tablero no esta VACIO
        
        else{
            
            boolean letrasComunesVerticales = cruzarPalabras(pVerticales,pHorizontales);
            boolean letrasComunesHorizontales = cruzarPalabras(pHorizontales,pVerticales);
            
            if(letrasComunesVerticales && letrasComunesHorizontales){                       
                   //Si estan cruzadas correctamente las palabras, se validan todas en el diccionario
                   boolean existenVerticales = palabrasValidasEnDiccionario(pVerticales);   
                   boolean existenHorizontales = palabrasValidasEnDiccionario(pHorizontales);
                   
                                      
                   if(existenVerticales && existenHorizontales){
                      palabraValida = true;
                      JOptionPane.showMessageDialog(null, "La palabra es CORRECTA");
                      
                      //Capturar la palabra completa para actualizar el tablero y la puntuacion
                      palabraNueva = capturarPalabra(pVerticales,pHorizontales,palabraNueva);
                      
                      try {
                            RmiServer.getInstance().getRmiServer().setTablero(palabraNueva,idJugador);
                      }catch (RemoteException ex) {
                             Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
                      }
                      
                   }else{
                      palabraValida = false;
                      JOptionPane.showMessageDialog(null, "La palabra No existe en el diccionario");
                   }                      
            
            }else{
               palabraValida = false;
               JOptionPane.showMessageDialog(null, "Error, No se cruzan las palabras");
            }
        }
        
                
                  
        
        
    }//GEN-LAST:event_jButton2ActionPerformed

    
    
    /**
     * @param args the command line arguments
     */
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton10;
    private javax.swing.JButton jButton11;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JButton jButton8;
    private javax.swing.JButton jButton9;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenu jMenu5;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JTextField jTextField7;
    // End of variables declaration//GEN-END:variables

    
    /*
     * Asigna el valor recibido por parámetro al atributo InterfaceRemota rmiServer
     */
    public void getInterfaceRemota(InterfaceRemota ir){   
        rmiServer = ir;
    }
    
    /**
    * Asigna las imágenes de las fichas para mostrar de cada una de las letras contenidas en el atril
    * @throws RemoteException 
    */
    public void llenarAtril() throws RemoteException {
                        
        Tablero t = RmiServer.getInstance().getRmiServer().getTablero();
        int pos = 475;
        
        for(int i = 0; i < 7; i++){
                
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("a")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\A.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("b")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\B.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("c")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\C.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("ch")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\CH.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("d")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\D.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("e")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\E.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("f")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\F.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("g")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\G.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("h")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\H.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("i")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\I.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("j")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\J.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("l")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\L.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("ll")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\LL.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                }
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("m")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\M.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("n")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\N.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("ñ")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\Ñ.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("o")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\O.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("p")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\P.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("q")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\Q.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("r")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\R.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("rr")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\RR.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("s")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\S.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("t")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\T.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("u")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\U.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("v")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\V.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("x")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\X.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("y")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\Y.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("z")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\Z.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                } 
                if(t.getJugadores().get(idJugador).getAtril().getFichas().get(i).getLetra().equals("bla")){
                    String rutaFicha = "C:\\Imagenes\\Fichas\\BLA.png";
                    pos = pintarAtril(rutaFicha,pos);                  
                }                               
       }
     }

    /**
     * Devuelve un atributo de tipo boolean, siendo true si existe una palabra dentro del diccionario con los métodos de clase [@Arbol]
     * @param palabra
     * @return boolena
     */
    private boolean verificarDiccionario(String palabra) {
        
        boolean existe = false;
        Arbol arbol = new Arbol();
        arbol.LeerArchivo("C:\\Imagenes\\palabras.txt");
        if (arbol.buscar(palabra)) {
            System.out.println("Existe");
            existe = true;
        } else {
            System.out.println("No existe");
        }        
        return existe;
    }
     
    /*
     * Devuelve un atributo de tipo boolean, siendo true si no se encuentra ninguna ficha en la casilla 
     * central del tablero
     */
    public boolean tableroVacio(){
       
       boolean retorno = false; 
       Tablero t = board.tableroNuevo();   
       if(t.getInfoTablero()[7][7].getFicha().getLetra().equals("*")){
          retorno = true;
       }              
       return retorno;    
    }    
    
    /*
     * Devuelve un atributo de tipo boolean, siendo true cuando la primera ficha ingresada al tablero en un juego
     * es ubicada en la casilla central del tablero
     */
    public boolean validarPalabraEnTableroVacio(ArrayList<Casilla> p){
        //Tiene que existir alguna letra en la posicion 7,7 para que sea valida
       boolean retorno = false;
       for(int i=0; i < p.size();i++){
               if(p.get(i).getEjeX() == 7 && p.get(i).getEjeY() == 7){
                    retorno = true;
               }            
       }        
       return retorno;
    }       
   
    /**
     * Devuelve un atributo de tipo entero de la posición de cada ficha a partir de los parámetros de rutaFicha y pos
     * @param rutaFicha
     * @param pos
     * @return int
     */
    public int pintarAtril(String rutaFicha, int pos) {
            
            JButton b = new JButton();
            
             TransferHandler transfer = new TransferHandler("icon");
             //the JButton can now be dragged and the text will be dropped
             b.setTransferHandler(transfer);
             //add a MouseListener to initiate the Drag on the appropriate
             //MouseEvent
             b.addMouseListener(new MouseAdapter(){

         public void mousePressed(MouseEvent e){

                JButton button = (JButton)e.getSource();
                TransferHandler handle = button.getTransferHandler();
                handle.exportAsDrag(button, e, TransferHandler.COPY);                
            }
        });     
                                   
            b.setBounds(45,45,45,45);
            b.setIcon(new javax.swing.ImageIcon(rutaFicha));
            b.setLocation(pos, 640);                    
            pos = pos+50;  
            this.getContentPane().add(b);
            atril.add(b);
            return pos;
    }        
        
    /*
     * Asigna a un campo de texto el nombre, personaje y puntaje de los jugadores conectados al servidor en el juego
     */
    
    public void mostrarClientes() throws RemoteException{
           
           Tablero t = RmiServer.getInstance().getRmiServer().getTablero();
           int pos = 154;
           int pos2 = 162;
           
           for(int i = 0; i < t.getJugadores().size(); i++){
               JLabel nombre = new JLabel();               
               nombre.setBounds(50, 560, 150, 14);             
               nombre.setText(t.getJugadores().get(i).getNombre());   
               nombre.setForeground(new java.awt.Color(255, 255, 255));
               nombre.setLocation(120, pos2);
                              
               JLabel personaje = new JLabel();
               personaje.setBounds(150, 170, 35, 50);
               personaje.setLocation(70, pos);
               if(t.getJugadores().get(i).getPersonaje().equals("Batman")){
                  personaje.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\BatmanIcon.png"));
               }
               if(t.getJugadores().get(i).getPersonaje().equals("Robin")){
                  personaje.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\robinIcon.png"));
               }
               if(t.getJugadores().get(i).getPersonaje().equals("Joker")){
                  personaje.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\jokerIcon.png"));
               }
               if(t.getJugadores().get(i).getPersonaje().equals("Riddle")){
                  personaje.setIcon(new javax.swing.ImageIcon("C:\\Imagenes\\riddleIcon.png"));
               }
               
               JLabel puntaje = new JLabel();               
               puntaje.setBounds(50, 560, 150, 14);             
               puntaje.setText(Integer.toString(t.getJugadores().get(i).getPuntaje()));   
               puntaje.setForeground(new java.awt.Color(255, 255, 255));
               puntaje.setLocation(220, pos2);
               
               pos = pos + 50;
               pos2 = pos2 + 50;
               this.getContentPane().add(nombre);
               this.getContentPane().add(personaje);
               this.getContentPane().add(puntaje);
               
           
           }
           
    
    }    

    /*
     * Devuelve una lista que en cada elemento contiene una lista de tipo Casilla, la cual representa
     * una palabra ingresada verticalmente en el tablero
     */
    public ArrayList<ArrayList<Casilla>> obtenerPalabrasVerticales() {
        ArrayList<ArrayList<Casilla>> pv = new ArrayList<ArrayList<Casilla>>();
        Tablero t = board.tableroNuevo();
        
        for(int i = 0; i < 15 ; i++){
           for(int j = 0; j < 15 ; j++){
               
               if((!t.getInfoTablero()[i][j].getFicha().getLetra().equals("/"))&&
                  (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("*"))&&
                  (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("-"))&&
                  (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("+"))&&
                  (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("."))){
               
                   ArrayList<Casilla> palabra = new ArrayList<Casilla>();
                   palabra.add(t.getInfoTablero()[i][j]);
                   boolean continuaPalabra = true;
                   
                   while(continuaPalabra){                        
                       if(j<14){
                        j++;
                        if((!t.getInfoTablero()[i][j].getFicha().getLetra().equals("/"))&&
                          (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("*"))&&
                          (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("-"))&&
                          (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("+"))&&
                          (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("."))){
                               
                               palabra.add(t.getInfoTablero()[i][j]);
                         }else{
                               continuaPalabra = false;                        
                         }   
                       }else{
                           continuaPalabra = false;
                       }
                   }                   
                   pv.add(palabra);
                   
               }             
           }        
        }    
                
        return pv;
    }

    /*
     * Devuelve una lista que en cada elemento contiene una lista de tipo Casilla, la cual representa
     * una palabra ingresada horizontalmente en el tablero
     */
    public ArrayList<ArrayList<Casilla>> obtenerPalabrasHorizontales() {
        ArrayList<ArrayList<Casilla>> ph = new ArrayList<ArrayList<Casilla>>();
        Tablero t = board.tableroNuevo();
        
        for(int j = 0; j < 15 ; j++){
           for(int i = 0; i < 15 ; i++){
              
               if((!t.getInfoTablero()[i][j].getFicha().getLetra().equals("/"))&&
                  (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("*"))&&
                  (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("-"))&&
                  (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("+"))&&
                  (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("."))){
               
                   ArrayList<Casilla> palabra = new ArrayList<Casilla>();
                   palabra.add(t.getInfoTablero()[i][j]);
                   boolean continuaPalabra = true;
                   
                   while(continuaPalabra){
                       if(i<14){
                        i++;
                        if((!t.getInfoTablero()[i][j].getFicha().getLetra().equals("/"))&&
                          (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("*"))&&
                          (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("-"))&&
                          (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("+"))&&
                          (!t.getInfoTablero()[i][j].getFicha().getLetra().equals("."))){
                               
                               palabra.add(t.getInfoTablero()[i][j]);
                         }else{
                               continuaPalabra = false;                        
                         }   
                       }else{
                           continuaPalabra = false;
                       }
                   }  
                   ph.add(palabra);
                   
               }             
           }        
        }
                
        return ph;
    }

    /*
     * Devuelve un atributo de tipo boolean, siendo true si una palabra vertical se cruza con una palabra horizontal a partir
     * de las palabras recibidas por parámetro
     */
    
    private boolean cruzarPalabras(ArrayList<ArrayList<Casilla>> pv, ArrayList<ArrayList<Casilla>> ph) {
        
        boolean validas = true;
        for(int i = 0; i < pv.size();i++){
            for(int k = 0; k < ph.size();k++){
            
                if((pv.get(i).size() > 1) && (ph.get(k).size() > 1)){
                    
                    boolean palabraValida = false;
                    for(int j = 0; j < pv.get(i).size(); j++){
                        for(int l = 0; l < ph.get(k).size(); l++){
                            
                            if((pv.get(i).get(j).getEjeX() == ph.get(k).get(l).getEjeX()) && (pv.get(i).get(j).getEjeY() == ph.get(k).get(l).getEjeY())){
                                palabraValida = true;
                            }                            
                        }
                    }                    
                    if(palabraValida == false){
                        validas = palabraValida;
                    }
                }                
            }        
        }        
        return validas;        
    }

    /*
     * Devuelve un atributo de tipo boolean, siendo true si una palabra ingresada en el tablero existe en el diccionario
     * a partir de la palabra recibida por parámetro
     */
    private boolean palabrasValidasEnDiccionario(ArrayList<ArrayList<Casilla>> p) {
        
        boolean validas = true;
        
        System.out.println("Tamaño palabras : "+p.size());
        for(int i = 0; i < p.size(); i++){     
                if(p.get(i).size() > 1){
                    String palabra = "";
                    for(int j = 0; j < p.get(i).size(); j++){                     
                        palabra = palabra.concat(p.get(i).get(j).getFicha().getLetra());                         
                    } 
                    System.out.println("Palabra : "+palabra);
                    
                    boolean existe = verificarDiccionario(palabra);                         
                        if(existe == false){
                           validas = false;
                           System.out.println(palabra+" "+"No existe");
                        } 
                }        
        }                
        return validas;
    }
    
     /*
     * Devuelve la palabra que el jugador ingreso al tablero incluyendo la que utilizó de 
     * las fichas previamente colocadas
     */
    
    private ArrayList<Casilla> capturarPalabra(ArrayList<ArrayList<Casilla>> pVerticales, ArrayList<ArrayList<Casilla>> pHorizontales, ArrayList<Casilla> palabraNueva) {
        
        int numPalabrasHorizontales = 0;
        int numPalabrasVerticales = 0;
        
        for(int i = 0; i < palabraNueva.size(); i++){
            if(palabraNueva.get(0).getEjeX() == palabraNueva.get(i).getEjeX()){
               numPalabrasHorizontales++;
            }
            if(palabraNueva.get(0).getEjeY() == palabraNueva.get(i).getEjeY()){
               numPalabrasVerticales++;
            }
        }
        
        if(numPalabrasHorizontales == palabraNueva.size()){
           
            for(int i = 0; i < pHorizontales.size(); i++){
                for(int j = 0; j < pHorizontales.get(i).size(); j++){
                    if((pHorizontales.get(i).get(j).getEjeX() == palabraNueva.get(0).getEjeX()) &&
                       (pHorizontales.get(i).get(j).getEjeY() == palabraNueva.get(0).getEjeY())){
                           
                           palabraNueva = pHorizontales.get(i);
                     }
                }
            }
            
        }
        if(numPalabrasVerticales == palabraNueva.size()){
           
            for(int i = 0; i < pVerticales.size(); i++){
                for(int j = 0; j < pVerticales.get(i).size(); j++){
                    if((pVerticales.get(i).get(j).getEjeX() == palabraNueva.get(0).getEjeX()) &&
                       (pVerticales.get(i).get(j).getEjeY() == palabraNueva.get(0).getEjeY())){
                           
                           palabraNueva = pVerticales.get(i);
                     }
                }
            }            
        }
               
        return palabraNueva;
    }
}
    
    

